import axios from 'axios'
import { TIMEOUT, BASE_URL, API_USER_HOST,API_HOST } from '@/config/site'
import store from '@/store'

const delay = (ms = 1000) =>
  new Promise(resolve => {
    setTimeout(resolve, ms)
  })

// 多实例
const instance = axios.create({
  timeout: TIMEOUT
  // baseURL: BASE_URL
})

// 响应拦截器
instance.interceptors.response.use(
  res => res.data,
  err => {
    // 统一错误处理
    return Promise.reject(err)
  }
)

// 请求拦截器
instance.interceptors.request.use(
  config => {
    config.url = config.url.replace('#cityid#', store.getters.cityid)
    // 不在开发环境时才对url进行处理
    if (process.env.NODE_ENV != 'development') {
      // 用户登录服务器
      if (config.url.startsWith('/soap')) {
        config.url = API_USER_HOST + config.url
      }
      if(config.url.startsWith('/api')){
        config.url = API_HOST + config.url
      }

      // 跨域处理,是和后端商量后才可以的,后端来处理才行
      if (config.url.includes('?')) {
        config.url += '&cors=T'
      } else {
        config.url += '?cors=T'
      }


    } else {
      config.baseURL = BASE_URL
    }

    return config
  },
  err => Promise.reject(err)
)

/**
 * 进行get请求
 * @param {string} url 请求的url地址，如果请求地址中有域名，则不会走代理
 * @param {json} config 设置请求头额外信息
 * @returns Promise
 */
export const get = (url, config = {}) => instance.get(url, config)

/**
 * 进行post请求
 * @param {string} url 请求的url地址，如果请求地址中有域名，则不会走代理
 * @param {json|FormData} data 请求体数据
 * @param {json} config 设置请求头额外信息
 * @returns Promise
 */
export const post = (url, data = {}, config = {}) => instance.post(url, data, config)

